package com.palominocia.capa_datos_nodoCentral.dbPostgreSQL.schema1.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.activation.DataHandler;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;

import com.palominocia.capa_datos_nodoCentral.dbPostgreSQL.schema1.modelo.opciones.ParametrosRespuesta;
import com.sun.istack.ByteArrayDataSource;

public class Utiles {
	public final static String CORRECTO="0";
	public static ParametrosRespuesta CalculaParametro(int i) {
		return ParametrosRespuesta.findParametrosRespuesta((long)i);
	}
	
	/** 
	* Verifica que la dirección IP es una dirección privada válida. 
	* 
	* @param ip Cadena de texto con la dirección que se quiere validar. 
	* @return true si es una dirección válida, false en otro caso.
	*/  
	public static  boolean validaDireccionIp(String ipAdress)  
	{  
	  /* patrón para los números de .0 a .255 */  
	  String n = "\\.(([1-9]?[0-9])|(1[0-9]{2})|(2([0-4][0-9]|5[0-5])))";  
	  
	  /* patrón para los números de .16 a .31 */  
	  String m = "\\.((1[6-9])|(2[0-9])|(3[01]))";  
	  
	  /* 192.168.0.0 a 192.168.255.255 */  
	  if(ipAdress.matches("^192\\.168(" + n + "){2}$"))  
	      return true;  
	  
	  /* 10.0.0.0 a 10.255.255.255 */  
	  else if(ipAdress.matches("^10(" + n + "){3}$"))  
	      return true;
	  
	  /* 172.16.0.0 a 172.31.255.255 */  
	  else if(ipAdress.matches("^172" + m + "(" + n + "){2}$"))  
	      return true;
	  
	  /* la dirección no coincidió con ninguna de las anteriores */
	  return false;
	}
	public static  boolean validaDireccionIp(String ipAdress,String metodo)  
	{ 
		Pattern pattern;
	    Matcher matcher;

	    String IPADDRESS_PATTERN = 
			"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
			"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
			"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
			"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
	    
	    pattern = Pattern.compile(IPADDRESS_PATTERN);
	    matcher = pattern.matcher(ipAdress);
		
	    return matcher.matches();	
	}
	public static DataHandler decodeB64(String cadena){
		DataHandler lDataHandler = new DataHandler(new ByteArrayDataSource(Base64.decodeBase64(cadena), "archivo"));
		return lDataHandler;
	}
	public static String decodeB64String(String str) {
		return StringUtils.newStringUtf8(Base64.decodeBase64(str));
	}

	public static String encodeB64(String str) {
		return Base64.encodeBase64String(StringUtils.getBytesUtf8(str));
	}
}
